윈도우 NT 아키텍처
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
윈도우 NT 아키텍처는 마이크로소프트가 IBM과의 OS/2 공동 개발 중 겪은 문제들을 해결하기 위해 개발한 운영 체제의 아키텍처이다. 데이비드 커틀러가 DEC의 VMS 아키텍처를 기반으로 개발을 주도했으며, 1993년 Windows NT 3.1을 시작으로 다양한 버전이 출시되었다. NT 아키텍처는 마이크로커널과 서브시스템 개념을 도입하여 안정성을 높였고, 32비트 및 64비트 시스템을 모두 지원하며, 클라이언트와 서버 제품군으로 나뉜다. 또한, 보안을 강화하고, 다양한 하드웨어 플랫폼을 지원하며, 서비스라는 개념을 통해 시스템의 모듈화와 관리를 용이하게 했다.
더 읽어볼만한 페이지
- 윈도우 NT 아키텍처 - WoW64
WoW64는 64비트 윈도우에서 32비트 응용 프로그램을 실행하기 위한 호환성 계층으로, 32비트 코드를 변환하고 시스템 자원을 관리하며 파일 시스템 리디렉션을 제공하지만, 완벽한 호환성을 보장하지 않고 성능 오버헤드 및 API 관련 문제점을 가질 수 있다. - 윈도우 NT 아키텍처 - 로컬 보안 인증 하위 시스템 서비스
- 윈도우 NT - 윈도우 8
윈도우 8은 2012년 마이크로소프트가 출시한 운영 체제로, 터치스크린 기기 사용성을 개선하기 위해 메트로 디자인을 도입했으며, 윈도우 8.1로 개선되었고, 32/64비트 등 다양한 에디션으로 출시되었으나 2016년 지원이 종료되었다. - 윈도우 NT - 윈도우 10
윈도우 10은 마이크로소프트가 개발하여 2015년 출시된 운영 체제로, 통합 플랫폼을 지향하며 새로운 시작 메뉴, 가상 데스크톱, 엣지 브라우저 등을 특징으로 하고, 무료 업그레이드와 지속적인 업데이트를 통해 기능을 개선했으며, 다양한 에디션으로 제공되지만, 강제 업그레이드, 개인 정보 수집 등으로 비판받기도 했다.
윈도우 NT 아키텍처 | |
---|---|
개요 | |
![]() | |
개발사 | Microsoft |
제품 계열 | Windows NT 계열 |
소스 모델 | 부분적으로 오픈 소스 |
커널 종류 | 하이브리드 커널 |
라이선스 | 상용 라이선스 |
상세 정보 | |
지원 CPU 아키텍처 | IA-32 x86-64 ARM DEC Alpha (과거) MIPS (과거) PowerPC (과거) |
지원 시스템 | 단일 프로세서 다중 프로세서 |
사용자 인터페이스 | GUI |
최신 버전 | Windows 11 (NT 10.0) / 2021년 10월 5일 |
업데이트 방식 | Windows 업데이트 |
특징 | |
특징 | 높은 안정성과 보안성 NTFS 파일 시스템 지원 다양한 하드웨어 지원 Active Directory를 통한 중앙 집중식 관리 |
역사 | |
최초 릴리스 | 1993년 7월 27일 (Windows NT 3.1) |
개발 시작 | 1988년 |
개발 코드명 | OS/2 3.0 NT |
2. 역사적 배경
마이크로소프트(MS)는 MS-DOS와 OS/2의 한계를 넘어 새로운 운영 체제 아키텍처를 구축하기 위해 윈도우 NT를 개발했다.
MS-DOS의 후속으로 IBM과 함께 OS/2를 공동 개발하던 마이크로소프트는, 계약 및 개발 방식의 차이로 IBM과 잦은 갈등을 겪었다.[20] 이에 빌 게이츠는 DEC에서 VMS 개발자로 명성을 얻은 데이비드 커틀러를 영입하여 새로운 OS 개발을 추진했다.[20]
1990년 Windows 3.0이 큰 성공을 거두자, 마이크로소프트는 자체적인 Windows 개발로 방향을 전환했다. 그러나 초기 Windows는 16비트 코드로 작성된 MS-DOS 기반이었기 때문에, 메모리 관리, 멀티태스킹, 네트워크 기능 등에서 여러 문제점을 안고 있었다.
이에 빌 게이츠는 커틀러가 개발 중이던 OS/2 3.0을 NT로 변경하고, Windows 3.0의 GUI 셸[21]과 16비트 Windows API (Win16) 호환성을 갖춘 자체 OS를 개발하기로 결정했다. 그 결과, 1993년 NT 계열의 첫 작품인 Windows NT 3.1이 출시되었다.
2. 1. 개발 배경
마이크로소프트는 MS-DOS의 후속 운영체제로 OS/2를 IBM과 공동 개발하고 있었으며, 1980년대 말에는 OS/2 3.0의 개발을 주로 담당하고 있었다. 그러나 계약 관계, 개발 방식 등에서 IBM 측과 잦은 대립을 겪어 프로젝트 진행이 크게 정체되는 상황이었다.[20]그러자 빌 게이츠는 상황을 타개하기 위해 프로젝트 매니저를 외부에서 찾았고, 당시 DEC에 재직 중이던 데이비드 커틀러를 발탁했다. 커틀러는 DEC의 VAX 머신용 OS인 VMS의 개발자로 이름을 알린 인물이다. 커틀러는 처음에는 OS/2 3.0 프로젝트에 참여했지만, 난항을 겪는 IBM과의 협상 과정에서 OS/2에 사실상 기대를 접고, 후에 NT로 명명될 새로운 OS 개발을 물밑에서 추진하기 시작했다. 이는 그가 과거 DEC에서 담당했던 VMS의 아키텍처를 기초로 하는 극히 현대적인 구성으로, 이식성이 높은 OS였다.[20]
OS/2 차기 버전의 개발이 지연되는 가운데, 마이크로소프트는 임시방편으로 80386 탑재 머신을 주요 타겟으로 개발하고 있던 Windows 3.0을 1990년에 출시했다. 이 Windows 3.0이 큰 인기를 얻으면서 게이츠는 방침을 전환하여 후속 OS를 OS/2가 아닌 자사 오리지널 Windows로 결정했다. 그러나 초기 Windows는 겉보기에는 GUI였지만 내부적으로는 16비트 코드로 작성된 MS-DOS를 기반으로 한 애플리케이션 런처에 지나지 않았고, 당시 지원되었던(그리고 PC/AT에 탑재된 CPU였기에 PC 시장의 주류였던) Intel 80286의 기능적 제약에 기인하는 빈약한 메모리 관리 기능, 멀티태스킹의 불완전함, 네트워크 기능의 결여 등 과제가 산적해 있었다.
이에 게이츠는 커틀러가 개발하고 있던 OS/2 3.0을 NT로 변경하고, 거기에 Windows 3.0에서 어느 정도 확립된 GUI 셸[21]을 씌우고, 또한 거기에 구현되었던 16비트 Windows API (Win16)와의 호환성을 갖춘 OS를 자체 개발하기로 결정했으며, 1993년에는 NT 계열 첫 번째 작품인 Windows NT 3.1을 출시했다.
2. 2. 초기 버전 (NT 3.1 ~ NT 4.0)
Windows NT 3.1은 1993년에 출시되었으며, Workstation (Windows NT) 및 Advanced Server 에디션으로 제공되었다. NT 3.1의 RTM 빌드는 528이다.Windows NT 3.5는 1994년에 출시되었으며, Workstation 및 Server 에디션으로 제공되었다. NT 3.5의 RTM 빌드는 807이다.
Windows NT 3.51은 1995년에 출시되었으며, Workstation 및 Server 에디션으로 제공되었다. NT 3.51의 RTM 빌드는 1057이다.
Windows NT 4.0은 1996년에 출시되었으며, Workstation, Server, Server Enterprise Edition, Terminal Server, Embedded 에디션으로 제공되었다. NT 4.0의 RTM 빌드는 1381이다.
NT 버전 | RTM 빌드 | 제품명 | 에디션 및 비고 | 출시 연도 |
---|---|---|---|---|
NT 3.1 | 528 | Windows NT 3.1 | Workstation (Windows NT), Advanced Server | 1993년 |
NT 3.5 | 807 | Windows NT 3.5 | Workstation, Server | 1994년 |
NT 3.51 | 1057 | Windows NT 3.51 | Workstation, Server | 1995년 |
NT 4.0 | 1381 | Windows NT 4.0 | Workstation, Server, Server Enterprise Edition, Terminal Server, Embedded | 1996년 |
2. 3. 발전과 확장 (Windows 2000 ~ Windows 7)
Windows 2000은 NT 5.0 커널(RTM 빌드 2195)을 기반으로 하며, Professional, Server, Advanced Server, Datacenter Server 에디션으로 2000년에 출시되었다.[4] 대한민국에서는 김대중 정부의 IT 산업 육성 정책과 맞물려 사회 전반에 널리 보급되면서 정보화 사회의 기반을 다지는 데 중요한 역할을 했다.Windows XP는 NT 5.1 커널(RTM 빌드 2600)을 기반으로 하며, 2001년에 출시되었다.[5] Home, Professional, Media Center, Tablet PC, Starter, Embedded 등 다양한 에디션이 출시되었다.[5] 2006년에는 Windows Fundamentals for Legacy PCs 에디션이 출시되었다.[5]
Windows Server 2003은 NT 5.2 커널(RTM 빌드 3790)을 기반으로 하며, 2003년에 출시되었다.[6] Standard, Enterprise, Datacenter, Web, Storage, Small Business Server, Compute Cluster Server 등 다양한 에디션이 출시되었다.[6] 같은 해에 Windows XP 64비트 에디션이, 2005년에는 Professional x64 Edition이 출시되었다.[6] 2007년에는 Windows Home Server가 출시되었다.[6]
Windows Vista는 NT 6.0 커널(RTM 빌드 6000, SP1: 6001, SP2: 6002)을 기반으로 하며, 2006년에 기업용으로, 2007년에 일반 소비자용으로 출시되었다.[7] Starter, Home Basic, Home Premium, Business, Enterprise, Ultimate 등 다양한 에디션이 출시되었다.[7]
Windows Server 2008은 NT 6.0 커널(SP1: 6001, SP2: 6002)을 기반으로 하며, 2008년에 출시되었다.[7] Standard, Enterprise, Datacenter, Web, Foundation, Itanium-based Systems, Storage, Small Business Server 등 다양한 에디션이 출시되었다.[7]
Windows 7은 NT 6.1 커널(RTM 빌드 7600, SP1: 7601)을 기반으로 하며, 2009년부터 2011년까지 출시되었다(DSP 버전은 2009년부터 2017년까지).[8] Starter, Home Basic, Home Premium, Professional, Enterprise, Ultimate 등 다양한 에디션이 출시되었다.[8]
같은 NT 6.1 커널을 사용하는 Windows Server 2008 R2는 Standard, Enterprise, Datacenter, Web, Foundation, Itanium-based Systems 에디션으로 출시되었다.[8] 이 외에도 Windows MultiPoint Server 2010, Windows Small Business Server 2011 Standard, Windows Home Server 2011, Windows MultiPoint Server 2011 (Standard, Premium), Windows Small Business Server 2011 Essentials 등이 NT 6.1 커널 기반으로 출시되었다.[8]
2. 4. 현대적 진화 (Windows 8 ~ 현재)
윈도우 8(2012년)은 윈도우 7의 후속 버전으로, 터치스크린에 최적화된 새로운 사용자 인터페이스를 도입했다. 윈도우 8은 Windows 8(무인(Core)), Windows 8 Pro, Windows 8 Enterprise, Windows RT 에디션으로 출시되었다.[1] 윈도우 서버 2012는 윈도우 8과 동일한 커널을 공유하며, Datacenter, Standard, Essentials, Foundation, Storage, Hyper-V 에디션으로 출시되었다.[1]윈도우 8.1(2013년)은 윈도우 8의 메이저 업데이트 버전으로, 사용자 인터페이스 개선 및 새로운 기능을 추가했다. 윈도우 8.1은 윈도우 8 및 Windows RT의 업데이트 형태로 제공되었다.[1] 윈도우 서버 2012 R2는 윈도우 8.1과 동일한 커널을 공유하며, Datacenter, Standard, Essentials, Foundation, Storage, Hyper-V 에디션으로 출시되었다.[1]
윈도우 10(2015년)은 윈도우 8.1의 후속 버전으로, 시작 메뉴를 복원하고 데스크톱 환경을 개선하는 등 사용자 인터페이스를 대폭 변경했다. 윈도우 10은 Home, Pro, Enterprise, Education, Mobile, Mobile Enterprise, IoT Enterprise, IoT Core, Pro For Workstations 등 다양한 에디션으로 출시되었다.[1] 윈도우 10은 여러 빌드(1507, 1511, 1607, 1703, 1709, 1803, 1809, 1903, 1909, 2004, 20H2, 21H1, 21H2, 22H2)를 거치며 지속적으로 업데이트되었다.[1]
윈도우 서버 2016은 윈도우 10 빌드 14393을 기반으로 하며, Standard, Essentials, Datacenter, Storage, Hyper-V 에디션으로 출시되었다.[1] 윈도우 서버 2019는 윈도우 10 빌드 17763을 기반으로 하며, Standard, Essentials, Datacenter, Hyper-V 에디션으로 출시되었다.[1] 윈도우 서버 2022는 Standard, Datacenter 에디션으로 출시되었다.
윈도우 11(2021년)은 윈도우 10의 후속 버전으로, 새로운 사용자 인터페이스와 기능 개선을 제공한다. 윈도우 11은 Home, Pro, Education, Pro For Workstations, Enterprise, IoT Enterprise 에디션으로 출시되었다.[1] 윈도우 11은 여러 빌드(21H2, 22H2, 23H2, 24H2)를 거치며 업데이트되고 있다.[1]
NT 버전 | 제품명 | 에디션 | 출시 연도 |
---|---|---|---|
NT 6.2 | Windows 8, Windows Server 2012 | Windows 8(Core), Windows 8 Pro, Windows 8 Enterprise, Windows RT, Datacenter, Standard, Essentials, Foundation, Storage, Hyper-V, Windows MultiPoint Server 2012 | 2012년-2013년 |
NT 6.3 | Windows 8.1, Windows Server 2012 R2 | Windows 8 및 Windows RT의 메이저 업데이트, Datacenter, Standard, Essentials, Foundation, Storage, Hyper-V | 2013년-2015년 |
NT 6.4 | Windows Technical Preview | Home, Pro, Enterprise | 2014년 |
NT 10.0 | Windows 10, Windows 10 Mobile, Windows 10 IoT | Home, Pro, Enterprise, Education, Mobile, Mobile Enterprise, IoT Enterprise, IoT Core, Pro For Workstations | |
Windows Server 2016 | Standard, Essentials, Datacenter, Storage, Hyper-V | 2016년 | |
Windows Server 2019 | Standard, Essentials, Datacenter, Hyper-V | 2018년 | |
Windows Server 2022, Windows 11 | Standard, Datacenter, Home, Pro, Education, Pro For Workstations, Enterprise, IoT Enterprise | 2021년-현재 |
윈도우 NT는 사용자 모드와 커널 모드로 구성된 계층 구조를 가진다. 사용자 모드는 응용 프로그램이 실행되는 영역이고, 커널 모드는 운영 체제의 핵심 기능이 실행되는 영역이다. 이러한 분리를 통해 시스템 안정성과 보안을 강화한다.
3. 아키텍처
3. 1. 사용자 모드
사용자 모드는 커널 모드에 존재하는 입출력 관리자를 통해 적절한 커널 모드 드라이버에 입출력 요청을 보낼 수 있는 하위 시스템으로 이루어져 있다. 윈도우 NT의 사용자 모드 계층은 환경 하위 시스템(''Environment subsystems'')과 필수 하위 시스템(''Integral subsystem'')으로 구성된다.[50] 사용자 모드는 사용자가 이용하는 응용 프로그램, 윈도우의 서브 시스템, 시스템 프로세스의 일부가 배치되는 메모리 영역을 말하며, 하드웨어나 커널 모드 프로세스 및 메모리에 접근할 수 있는 권한은 없다.
사용자 모드 응용 프로그램과 운영 체제 커널 기능 간의 인터페이스를 "환경 하위 시스템"이라고 한다. 윈도우 NT는 각기 다른 API 세트를 구현하는 둘 이상의 환경 하위 시스템을 가질 수 있으며, 여러 종류의 운영 체제용으로 작성된 응용 프로그램을 지원하도록 설계되었다. 환경 하위 시스템은 하드웨어에 직접 액세스할 수 없고, 하드웨어 기능에 대한 액세스는 커널 모드 루틴을 호출하여 수행된다.
주요 환경 하위 시스템은 다음과 같다.[1]3. 1. 1. Win32 환경 하위 시스템
Win32 환경 하위 시스템은 32비트 윈도우 애플리케이션을 실행할 수 있게 해준다. 이 시스템은 콘솔, 텍스트 창 지원, 종료 및 하드 오류 처리를 담당하며, 다른 모든 환경 하위 시스템에도 영향을 준다.[50] 또한 가상 DOS 머신(VDM)을 지원하여 MS-DOS 및 16비트 윈도우(Win16) 응용 프로그램을 윈도우 NT에서 실행할 수 있도록 한다.
NTVDM은 자체 주소 공간에서 실행되며 Intel 80486이 MS-DOS 5.0을 실행하는 것을 에뮬레이션하는 MS-DOS VDM이다. Win16 프로그램은 Win16 VDM에서 실행되는데, 기본적으로 각 프로그램은 동일한 프로세스에서 실행되어 동일한 주소 공간을 사용하지만, Win16 VDM은 각 프로그램에 자체 스레드를 제공한다. 윈도우 NT는 사용자가 별도의 Win16 VDM에서 Win16 프로그램을 실행할 수 있도록 하여, 윈도우 NT가 하나의 실행 중인 애플리케이션만 포함하는 전체 VDM 프로세스를 선점하므로 선점형 멀티태스킹을 지원한다.
Win32 환경 하위 시스템 프로세스 (csrss.exe)는 "윈도우 관리자"라고도 불리는 창 관리 기능도 포함한다. 이 기능은 키보드 및 마우스와 같은 입력 이벤트를 처리하고, 이 입력을 수신해야 하는 애플리케이션에 메시지를 전달한다. 각 애플리케이션은 이러한 메시지에 응답하여 자체 창과 메뉴를 그리거나 새로 고친다.
윈도우 NT 아키텍처에서, MS-DOS/Windows 3.1 계열의 소프트웨어를 실행하기 위한 서브 시스템은 WoW (Win16 on Win32) 기능을 통해 호환성을 유지한다. 엄밀하게 말하면, 서브 시스템의 본체는 가상 86 모드, 286 보호 모드, 386 보호 모드를 처리하는 가상 머신 모니터인 NTVDM (NT Virtual DOS Machine)이다. WOW는 NTVDM이 트랩한 Win16 API 호출을 Win32 API로 변환하는 연결 프로그램이다. NTVDM은 16비트 DOS 시스템 콜과 Win16 API를 실행하는 데 특화되어 있으며, VESA VGA BIOS 등은 지원하지 않는다.[41]
Windows XP를 포함한 이후의 64비트 버전에서는 Win64 서브시스템이 기본이며, Win32 서브시스템은 WOW64 기능을 사용하여 구현된다. 모든 64비트 Windows에서 Win16 서브 시스템은 탑재되어 있지 않다. 특히 x64의 경우, Long 모드에서 64비트 명령 집합을 사용할 수 있는 상태에서는 16비트 명령 집합의 작동에 필요한 가상 86 모드가 지원되지 않는다.
3. 1. 2. OS/2 환경 하위 시스템
OS/2 환경 하위 시스템은 16비트 문자 기반 OS/2 응용 프로그램을 지원하며, x86 머신에서 OS/2 1.x를 에뮬레이트하지만 OS/2 2.x 이상에서 사용되는 32비트 또는 그래픽 OS/2 응용 프로그램은 지원하지 않는다.[2] 그래픽 OS/2 1.x 프로그램을 실행하려면 윈도우 NT 프레젠테이션 관리자 추가 기능 하위 시스템을 설치해야 한다.[2] OS/2 하위 시스템을 가진 마지막 버전의 윈도우 NT는 윈도우 2000이었으며, 윈도우 XP부터는 중단되었다.[3][4] 초기 OS/2 프로그램을 실행하기 위한 서브 시스템으로, 보안상의 이유로 비활성화하는 것이 권장된다. 윈도우 XP 및 윈도우 서버 2003 이후 버전에서는 지원되지 않는다.
3. 1. 3. POSIX 환경 하위 시스템
POSIX 환경 하위 시스템은 ISO/IEC POSIX.1 표준 또는 관련 표준에 따라 엄격하게 작성된 애플리케이션을 지원한다.[50] 이 서브시스템은 인터릭스로 대체되었으며, 이는 유닉스용 윈도우 서비스의 일부이다.[3] 이는 다시 Linux용 Windows 하위 시스템으로 대체되었다.
POSIX 호환 서비스를 제공하기 위한 서브 시스템은 윈도우 NT 표준 POSIX 서브 시스템의 문제점을 해결하기 위해 Softway Systems사(1999년 9월 17일, 마이크로소프트사에 흡수 합병)가 개발한 OpenNT를 기원으로 한다. 이후 유닉스와 유사한 환경을 제공하는 Services for UNIX에 표준 탑재되어, 윈도우 NT 계열 OS에 네이티브로 고품질의 POSIX 환경이 제공되게 되었다. 윈도우 Vista의 상위 패키지 및 Windows Server 2003부터 SUA (Sub-system for UNIX-Based Applications)로 표준 탑재된다. 윈도우 NT에 의존하는 부분이 몇 가지 존재하며, 컴파일 시 소스 코드의 수정이 필요한 경우가 있다. 윈도우 8.1 / Windows Server 2012 R2부터 Interix 서브 시스템은 폐지되었다. 대체 수단으로 Hyper-V를 이용한 가상 유닉스 환경, 또는 Cygwin의 사용이 권장된다.
Windows Subsystem for Linux는 2016년 3월에 발표된 네이티브 리눅스 레이어를 제공하는 서브 시스템이다. 리눅스 커널의 시스템 콜을 NT 커널의 시스템 콜로 변환하여 리눅스 애플리케이션의 네이티브 동작을 실현한다. Interix 서브 시스템에서는 소스 코드 수정이나 Interix용으로 컴파일을 해야 했지만, Subsystem for Linux는 Ubuntu Linux와 바이너리 레벨에서의 호환성을 실현하고 있기 때문에 Ubuntu에서 빌드한 바이너리를 그대로 실행할 수 있다. bash나 Emacs 등 Unix/Linux 소프트웨어를 사용할 수 있게 된다.
3. 1. 4. 보안 하위 시스템
보안 하위 시스템은 보안 토큰을 처리하고, 리소스 권한에 따라 사용자 계정의 접근을 허용하거나 거부하며, 로그인 요청을 처리하고 로그인 인증을 시작하며, 윈도우 NT에서 감사해야 할 시스템 리소스를 결정한다.[5] 또한 Active Directory를 관리한다. 워크스테이션 서비스는 네트워크 리디렉터를 구현하는데, 이는 윈도우 파일 및 프린터 공유의 클라이언트 측이다. 이 서비스는 로컬 요청을 네트워크의 적절한 서버로 "리디렉션"하여 원격 파일 및 프린터에 대한 요청을 구현한다.[5] 반대로, 서버 서비스는 네트워크의 다른 컴퓨터가 로컬 시스템에서 제공하는 파일 공유 및 공유 프린터에 접근할 수 있도록 한다.[6]
3. 2. 커널 모드
윈도우 NT의 커널 모드는 컴퓨터 하드웨어 및 시스템 리소스에 대한 완전한 접근 권한을 가지며, 보호된 메모리 영역에서 코드를 실행한다.[51][7] 커널 모드는 스케줄링, 스레드 우선 순위, 메모리 관리 및 하드웨어와의 상호 작용을 제어한다. 사용자 모드 서비스와 응용 프로그램이 운영 체제의 중요한 영역에 접근하는 것을 막고, 사용자 모드 프로세스는 커널 모드에 이러한 작업을 대신 수행하도록 요청해야 한다.
x86 아키텍처는 4가지 권한 수준(0~3)을 지원하지만, 윈도우 NT는 "링 0"(커널 모드)과 "링 3"(사용자 모드) 두 가지 수준만 사용한다. 이는 RISC 플랫폼과의 코드 이식성을 고려한 설계였지만, OS/2 응용 프로그램과의 호환성 문제를 야기했다.[8][2]
커널 모드에서 실행되는 코드는 Executive 서비스, 커널, 하드웨어 추상화 계층(HAL), 커널 드라이버로 구성된다.[7][9] 커널 모드는 NT Executive, 커널, 각 장치 드라이버가 배치되는 메모리 영역을 말하며, 사용자 모드에 존재했던 각종 제한이 없다.
3. 2. 1. Executive 서비스
Windows Executive 서비스는 저수준 커널 모드 부분을 구성하며, NTOSKRNL.EXE 파일에 포함되어 있다.[7] I/O, 객체 관리, 보안 및 프로세스 관리를 처리한다. Executive 서비스는 여러 "하위 시스템"으로 나뉘는데, 주요 구성 요소는 다음과 같다.
"시스템 서비스"(내부 이름 "Nt"), 즉 시스템 호출도 이 수준에서 구현되며, 성능 향상을 위해 커널 계층을 직접 호출하는 극히 일부를 제외한다.
3. 2. 2. 커널
커널 모드의 윈도우 NT 커널은 컴퓨터 하드웨어 및 시스템 리소스에 대한 완전한 접근 권한을 가지며, 보호된 메모리 영역에서 코드를 실행한다.[51] 커널은 HAL과 실행자 사이에 위치하며, 다중 프로세서 동기화, 스레드 및 인터럽트 스케줄링과 디스패칭, 트랩 처리 및 예외 디스패칭을 제공한다. 또한 운영 체제를 시작하고 실행하는 데 필요한 부팅 시 장치 드라이버를 초기화하는 역할을 한다. 즉, 커널은 전통적인 마이크로커널의 거의 모든 작업을 수행한다. 실행자와 커널의 엄격한 구분은 원래 마이크로커널 설계의 가장 두드러진 잔재이며, 역사적인 설계 문서는 커널 구성 요소를 "마이크로커널"이라고 일관되게 지칭한다.
커널은 종종 프로세스 관리자와 인터페이스한다. 추상화 수준은 커널이 프로세스 관리자를 호출하지 않고 그 반대만 호출하도록 한다(몇몇 예외적인 경우를 제외하고, 기능적인 종속성까지는 아니다).
NT 커널은 NT Executive와 HAL의 중간에 위치한다. NT 5.2까지는 여러 개의 NT 커널이 존재했지만, Windows Vista부터는 ntoskrnl.exe로 통합되었다.
과거에는 다음과 같이 몇 가지 구현이 나뉘어 있었다.
파일명 | 설명 |
---|---|
ntoskrnl.exe | 표준적인 PC |
ntkrnlpa.exe | 표준적인 PC (32비트 Windows만 해당, PAE가 활성화된 경우) |
ntkrnlmp.exe | 멀티프로세서 PC |
ntkrpamp.exe | 멀티프로세서 PC (PAE가 활성화된 경우) |
3. 2. 3. 하드웨어 추상화 계층 (HAL)
윈도우 NT의 하드웨어 추상화 계층(HAL)은 컴퓨터의 물리적 하드웨어와 운영 체제의 나머지 부분 사이에 위치하는 계층이다. 하드웨어의 차이점을 숨기고 커널이 실행될 일관된 플랫폼을 제공하도록 설계되었다. HAL에는 I/O 인터페이스, 인터럽트 컨트롤러 및 다중 프로세서를 제어하는 하드웨어 관련 코드가 포함되어 있다.[51]HAL은 커널이 실행 계층 아래에 위치하는 방식처럼 완전히 커널 아래에 위치하는 계층은 아니다. 알려진 모든 HAL 구현은 어느 정도 커널 또는 심지어 실행 계층에 의존한다. 실제로 이는 커널 및 HAL 변형이 함께 작동하도록 특별히 구성된 일치하는 세트로 제공됨을 의미한다.
하드웨어 추상화는 일반적으로 이식성의 더 넓은 개념에 속하는 명령어 집합을 추상화하는 것을 포함하지 않는다. 필요한 경우 (예: x86 명령어 집합의 여러 개정 사항을 처리하거나 누락된 수학 보조 프로세서를 에뮬레이션하기 위해) 명령어 집합을 추상화하는 작업은 커널 또는 하드웨어 가상화를 통해 수행된다.
HAL은 커널 모드에서 동작하는 프로그램을 하드웨어로부터 분리하는 계층이지만, 커널과의 분리가 이상적이지 않고 HAL은 커널과 공존 관계에 있다. 또한, 극히 일부의 x86용 명령이 포함되어 있으며 커널에서 에뮬레이트된다. NT 커널과 HAL은 독립되어 있지 않아, NT 커널이 하드웨어에 직접 접근하는 경우도 있었지만, Windows Vista부터 NT 커널과 HAL의 의존 관계는 없어지고, hal.dll로 통일되었다.
HAL은 OS 설치 시 자동으로 선택된다. 다음은 몇 가지 HAL의 예시이다.
파일명 | 설명 |
---|---|
hal.dll | 표준 PC |
halaacpi.dll | APIC ACPI PC |
halacpi.dll | ACPI PC |
halapic.dll | APIC PC |
halmacpi.dll | 멀티프로세서 ACPI PC |
halmps.dll | 멀티프로세서 PC |
halsp.dll | Compaq SystemPro |
halborg.dll | Sillicon Graphics Workstation |
3. 2. 4. 커널 모드 드라이버
윈도우 NT는 컴퓨터 하드웨어와 상호 작용하기 위해 커널 모드 장치 드라이버를 사용한다. 각 드라이버는 운영 체제의 나머지 부분에 잘 정의된 시스템 루틴과 내부 루틴을 가진다. 모든 장치는 사용자 모드 코드에서 I/O 관리자의 파일 객체로 인식되지만, I/O 관리자 자체는 장치를 파일, 장치 또는 드라이버 객체로 정의하는 장치 객체로 인식한다.[51]커널 모드 드라이버는 세 가지 레벨로 존재한다.
- 최상위 드라이버: FAT 및 NTFS와 같은 파일 시스템 드라이버가 여기에 해당되며, 중간 드라이버에 의존한다.
- 중간 드라이버: 장치의 주 드라이버 또는 기능 드라이버로 구성되며, 선택적으로 하위 및 상위 레벨 필터 드라이버 사이에 위치한다. 기능 드라이버는 버스 컨트롤러, 어댑터 또는 브리지를 서비스하는 버스 드라이버에 의존하며, 자체와 기능 드라이버 사이에 선택적 버스 필터 드라이버를 가질 수 있다. 중간 드라이버는 최하위 레벨 드라이버에 의존한다. 윈도우 드라이버 모델(WDM)은 중간 계층에 존재한다.
- 최하위 드라이버: 장치를 직접 제어하는 기존 Windows NT 장치 드라이버이거나 PnP 하드웨어 버스일 수 있다. 하드웨어를 직접 제어하며 다른 드라이버에 의존하지 않는다.
사용자나 시스템으로부터 하드웨어로의 I/O를 하드웨어 고유의 기능으로부터 추상화하고, 시스템 서비스를 제공하는 것이 목적이다. 64비트 버전 Windows에서는 보안 및 동작 안정성 향상을 위해[44] 원칙적으로 장치 드라이버의 서명이 필수이다.[45] NT 4.0까지는 Windows NT 커널 모드 드라이버가 사용되었고, Windows 2000 이후에는 윈도우 드라이버 모델이 사용되고 있다. WDM은 Windows 98이나 Windows Me에서도 같은 소스 코드로 드라이버를 개발할 수 있도록 만들어졌다.
4. 버전별 특징
(DSP 버전은 2009년-2017년)
(DSP 버전은 2015년-2022년)